package com.stock_t.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.stock_t.entity.FundFlowHistory;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.time.LocalDate;
import java.util.List;

/**
 * 资金流向历史数据Mapper接口
 * 提供资金流向数据的CRUD操作和自定义查询方法
 */
@Mapper
public interface FundFlowHistoryMapper extends BaseMapper<FundFlowHistory> {

    /**
     * 根据股票代码查询资金流向历史数据
     * @param stockCode 股票代码
     * @return 资金流向历史数据列表
     */
    @Select("SELECT * FROM fund_flow_history WHERE stock_code = #{stockCode} ORDER BY trade_date DESC")
    List<FundFlowHistory> selectByStockCode(@Param("stockCode") String stockCode);

    /**
     * 根据股票代码和日期范围查询资金流向数据
     * @param stockCode 股票代码
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 资金流向数据列表
     */
    @Select("SELECT * FROM fund_flow_history WHERE stock_code = #{stockCode} AND trade_date BETWEEN #{startDate} AND #{endDate} ORDER BY trade_date DESC")
    List<FundFlowHistory> selectByDateRange(@Param("stockCode") String stockCode,
                                           @Param("startDate") LocalDate startDate,
                                           @Param("endDate") LocalDate endDate);

    /**
     * 删除指定日期之前的数据（用于数据清理）
     * @param cutoffDate 截止日期
     * @return 删除的记录数
     */
    @Delete("DELETE FROM fund_flow_history WHERE trade_date < #{cutoffDate}")
    int deleteBeforeDate(@Param("cutoffDate") LocalDate cutoffDate);
}